package cn.tedu.csmailproduct.service.impl;

import cn.tedu.csmailproduct.ex.ServiceException;
import cn.tedu.csmailproduct.mapper.AlbumMapper;
import cn.tedu.csmailproduct.mapper.BrandMapper;
import cn.tedu.csmailproduct.pojo.dto.AlbumAddNewDTO;
import cn.tedu.csmailproduct.pojo.dto.BrandAddNewDTO;
import cn.tedu.csmailproduct.pojo.entity.Album;
import cn.tedu.csmailproduct.pojo.entity.Brand;
import cn.tedu.csmailproduct.service.IAlbumService;
import cn.tedu.csmailproduct.service.IBrandService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 处理品牌数据的业务实现类
 *
 * @author java@tedu.cn
 * @version 0.0.1
 */
@Slf4j
@Service
public class BrandServiceImpl implements IBrandService {

    @Autowired
    private BrandMapper brandMapper;

    public BrandServiceImpl(){
        log.debug("创建业务对象：AlbumServiceImpl");
    }

    @Override
    public void addNew(BrandAddNewDTO brandAddNewDTO) {
        log.debug("开始处理【添加品牌】的业务，参数：{}",brandAddNewDTO);
        // 从参数对象中获取品牌名称
        String brandAddNewDTOName = brandAddNewDTO.getName();
        // 检查品牌名称是否已经被占用（品牌表中是否已经存在此名称的数据）
        log.debug("检查品牌名称是否已经被占用");
        int count = brandMapper.countByName(brandAddNewDTOName);
        if (count > 0) {
            // 是：品牌名称已经被占用，添加品牌失败，抛出异常
            String message = "添加品牌失败，品牌名称已经被占用!";
            log.debug(message);
            throw new ServiceException(message);
        }

        // 否：品牌名称没有被占用，则向品牌表中插入数据
        log.debug("品牌名称没有被占用，将向品牌表中插入数据");
        Brand brand = new Brand();
        BeanUtils.copyProperties(brandAddNewDTO,brand);
        log.debug("即将插入品牌数据：{}", brand);
        brandMapper.insert(brand);
        log.debug("插入品牌数据完成");
    }
}
